import {  Node, UITransform, Layers, SpriteFrame } from 'cc'

export const createUINode = (name = '') => {
  // 生成节点
  const node = new Node(name)

  // 设置为ui节点
  const transform = node.addComponent(UITransform)

  //以左上角为原点
  transform.setAnchorPoint(0, 1)

  // 重点，设置layer
  node.layer = 1 << Layers.nameToLayer('UI_2D')

  return node
}

// 从min到max之间随机一个数
export const random = (min: number, max: number) => {
  // return Math.floor(Math.random() * (max - min + 1)) + min
  return Math.floor(min + (max - min) * Math.random())
}

// 获取名字的数字进行排序
export const getNumberFromName = (name: string) => {
  // name = abc(11)
  const match = name.match(/\((\d+)\)/);
  return parseInt(match?.[1] || '0');
}

// 对spriteFrames进行排序
export const sortSpriteFrames = (spriteFrames: SpriteFrame[]) => {
  return spriteFrames.sort((a, b) => {
    return getNumberFromName(a.name) - getNumberFromName(b.name)
  })
}


/**
 * 生成一个随机的唯一ID
 * @param prefix 可选的前缀
 * @returns 生成的随机ID
 */
export function generateRandomId(prefix: string = ''): string {
  // 生成一个基于时间戳的随机数
  const timestamp = Date.now().toString(36);
  // 生成一个随机的6位字符串
  const randomStr = Math.random().toString(36).substring(2, 8);
  // 组合前缀、时间戳和随机字符串
  return `${prefix}${timestamp}${randomStr}`;
}

/**
* 生成一个UUID v4格式的随机ID
* @returns UUID格式的随机ID
*/
// export function generateUUID(): string {
//   return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
//       const r = Math.random() * 16 | 0;
//       const v = c === 'x' ? r : (r & 0x3 | 0x8);
//       return v.toString(16);
//   });
// }